/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package manejadores;

import entidades.Locacion;
import interfaz.Entidad;
import interfaz.Manejador;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import persistencia.Conexion;

/**
 *
 * @author Snailin
 */
public class ManejadorDeLocacion implements Manejador{
    private Conexion conexion=null;
    private static ManejadorDeLocacion instancia=null;
    private ResultSet rs=null;
    private PreparedStatement stmt=null;
    private ArrayList<Locacion>locaciones=null;

    public static ManejadorDeLocacion getInstancia() {
        if(instancia==null){
            instancia=new ManejadorDeLocacion();
        }
        return instancia;
    }

    private ManejadorDeLocacion(){
        conexion=Conexion.getInstancia();
    }

    public ArrayList<Locacion>getLocaciones(){
        locaciones=new ArrayList<Locacion>();
        String sql="SELECT * FROM locacion";
        stmt=conexion.hacerEnunciado(sql);
        rs=conexion.hacerConsulta(sql);
        try {
            while (rs.next()) {
                Locacion locacion=new Locacion(rs.getInt(1), rs.getInt(2),  rs.getString(3),  rs.getString(4));
                locaciones.add(locacion);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeLocacion.class.getName()).log(Level.SEVERE, null, ex);
        }

        return locaciones;

    }

    public int agregar(Entidad locacion) {
        int fila=0;
        String sql="INSERT INTO locacion (id_locacion, cantidad_poblacional, proyeccion_crecimiento_poblacional, descripcion)VALUES(0, ?, ?, ?)";
        stmt=conexion.hacerEnunciado(sql);
        try {
            stmt.setInt(1, ((Locacion) (locacion)).getCantidadPoblacional());
            stmt.setString(2, ((Locacion) (locacion)).getProyeccionCrecimientoPoblacional());
            stmt.setString(3, ((Locacion) (locacion)).getDescripcion());
            fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeLocacion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return fila;
    }

    public int eliminar(int id) {
        int fila=0;
        String sql="DELETE FROM locacion WHERE id_locacion = ? ;";
        stmt=conexion.hacerEnunciado(sql);
        try {
            stmt.setInt(1, id);
             fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeLocacion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return fila;
    }

    public int modificar(Entidad locacion, int id) {
        int fila=0;
        String sql="UPDATE locacion SET cantidad_poblacional = ?, proyeccion_crecimiento_poblacional =? , descripcion = ? WHERE id_locacion = ?";
        stmt=conexion.hacerEnunciado(sql);
          try {
            stmt.setInt(1, ((Locacion) (locacion)).getCantidadPoblacional());
            stmt.setString(2, ((Locacion) (locacion)).getProyeccionCrecimientoPoblacional());
            stmt.setString(3, ((Locacion) (locacion)).getDescripcion());
            stmt.setInt(1, id);
            fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeLocacion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return fila;
    }



}
